package analisadorLexico;


/**
 * Classe para armazenar os atributos e métodos do Token
 * 
 * @author Alan L Cardoso
 * 
 */
public class Token {

	private String imagem;

	private TipoToken classe;

	private Integer linha;

	private Integer coluna;

	public Token() {
	}

	public TipoToken getClasse() {
		return classe;
	}

	public void setClasse(TipoToken classe) {
		this.classe = classe;
	}

	public Integer getColuna() {
		return coluna;
	}

	public void setColuna(Integer coluna) {
		this.coluna = coluna;
	}

	public String getImagem() {
		return imagem;
	}

	public void setImagem(String imagem) {
		this.imagem = imagem;
	}

	public Integer getLinha() {
		return linha;
	}

	public void setLinha(Integer linha) {
		this.linha = linha;
	}

	@Override
	public String toString() {
		return "Imagem.: " + imagem + " Classe.: " + classe + " Linha.: "
				+ linha + " Coluna.: " + coluna;
	}

	public Token(String imagem, TipoToken classe, Integer linha, Integer coluna) {
		this.imagem = imagem;
		this.classe = classe;
		this.linha = linha;
		this.coluna = coluna;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((classe == null) ? 0 : classe.hashCode());
		result = prime * result + ((coluna == null) ? 0 : coluna.hashCode());
		result = prime * result + ((imagem == null) ? 0 : imagem.hashCode());
		result = prime * result + ((linha == null) ? 0 : linha.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof Token)) {
			return false;
		}
		Token other = (Token) obj;
		if (classe != other.classe) {
			return false;
		}
		if (coluna == null) {
			if (other.coluna != null) {
				return false;
			}
		} else if (!coluna.equals(other.coluna)) {
			return false;
		}
		if (imagem == null) {
			if (other.imagem != null) {
				return false;
			}
		} else if (!imagem.equals(other.imagem)) {
			return false;
		}
		if (linha == null) {
			if (other.linha != null) {
				return false;
			}
		} else if (!linha.equals(other.linha)) {
			return false;
		}
		return true;
	}

}
